function getSiteCfg() {
    $.getJSON(
        "/api/ocie/config_public/",
        function(json){
            var val = 'POC: <a class="POCemail" href="mailto:' +
                      json.ocie_poc_email + '">' + json.ocie_poc_name +
                      '</a> ' + 'Phone: (' +
                      json.ocie_poc_phone.substr(0,3) + ') ' +
                      json.ocie_poc_phone.substr(3,3) + '-' +
                      json.ocie_poc_phone.substr(6,4);
            $("span.POCemail").append(val);
        }
    );
    $.ajax({
        type: "GET",
        url: "/api/ocie/role_check/",
        success: function(string){
            $("a.logout:contains(Options)").css("display","block");
        },
        error: function(string){
            window.location = "/ocie/";
        }
    });
}


function getSiteInfo() {
    var ret = undefined;
    $.ajax({
        type: "GET",
        url: "/api/ocie/config/site/",
        dataType: "json",
	async: false,
        success: function(json){
            ret = json;
        }
    });
    return ret;
}


var postPOC = function() {
    $("#button_save_poc").parents("p").next()
        .children("*.waitMessage").show();
    var data = {};
    data['ocie_poc_name'] = $(":input[name=ocie_poc_name]").val();
    data['ocie_poc_email'] = $(":input[name=ocie_poc_email]").val();
    var phone = $(":input[name=ocie_poc_phone_area]").val() +
                $(":input[name=ocie_poc_phone_prefix]").val() +
                $(":input[name=ocie_poc_phone_suffix]").val();
    data['ocie_poc_phone'] = phone;
    var cb_success = function() {
	    showPOC();
	}
    var cb_error = function() {
            $("#button_save_poc").parents("p").next()
                .children("*.waitMessage").hide();
            $("#button_save_poc").parents("p").next()
                .children("*.generalErrorMessage").show();
	    bindButtons();
	}
    return formSubmit(data, cb_success, cb_error);
}


var postPR = function() {
    $("#button_save_pr").parents("p").next()
        .children("*.waitMessage").show();
    var data = {};
    data['ocie_pr_office_name'] = $(":input[name=ocie_pr_office_name]").val();
    data['ocie_pr_email'] = $(":input[name=ocie_pr_email]").val();
    var phone = $(":input[name=ocie_pr_phone_area]").val() +
                $(":input[name=ocie_pr_phone_prefix]").val() +
                $(":input[name=ocie_pr_phone_suffix]").val();
    data['ocie_pr_phone'] = phone;
    var cb_success = function() {
	    showPR();
	}
    var cb_error = function() {
            $("#button_save_pr").parents("p").next()
                .children("*.waitMessage").hide();
            $("#button_save_pr").parents("p").next()
                .children("*.generalErrorMessage").show();
	    bindButtons();
	}
    return formSubmit(data, cb_success, cb_error);
}


function formSubmit(data, cb_success, cb_error) {
    $.ajax({
        type: "POST",
        url: "/api/ocie/config/site/",
        data: data,
        success: cb_success,
        error: cb_error
    });
}


function buildContainers() {
    $("div.mainContent table tr:nth-child(2) td")
        .append( proto_html['poc'] ).append( proto_html['pr'] );
    showPOC();
    showPR();
    $("div.mainContent a.headerToggle").click( function(){
        toggleSection( this );
        return false;
    });
}


function showPOC() {
    var json = getSiteInfo();
    $("div.mainContent fieldset:nth-child(1) p").remove();
    $("div.mainContent fieldset:nth-child(1) span a")
        .removeClass('buttonInactive');
    $("div.mainContent fieldset:eq(0)")
        .append( proto_html['poc_show'] );
    $("div.mainContent fieldset:eq(0) p:eq(0) span")
        .html(json.ocie_poc_name);
    $("div.mainContent fieldset:eq(0) p:eq(1) span")
        .html(json.ocie_poc_email);
    var phone = '(' + json.ocie_poc_phone.substr(0,3) + ') ' +
                json.ocie_poc_phone.substr(3,3) + '-' +
                json.ocie_poc_phone.substr(6,4);
    $("div.mainContent fieldset:eq(0) p:eq(2) span")
        .html(phone);
    bindButtons();
}


function showPR() {
    var json = getSiteInfo();
    $("div.mainContent fieldset:nth-child(2) p").remove();
    $("div.mainContent fieldset:nth-child(2) span a")
        .removeClass('buttonInactive');
    $("div.mainContent fieldset:nth-child(2)")
        .append( proto_html['pr_show'] );
    $("div.mainContent fieldset:eq(1) p:eq(0) span")
        .html(json.ocie_pr_office_name);
    $("div.mainContent fieldset:eq(1) p:eq(1) span")
        .html(json.ocie_pr_email);
    var phone = '(' + json.ocie_pr_phone.substr(0,3) + ') ' +
                json.ocie_pr_phone.substr(3,3) + '-' +
                json.ocie_pr_phone.substr(6,4);
    $("div.mainContent fieldset:eq(1) p:eq(2) span")
        .html(phone);
    bindButtons();
}


function editPOC() {
    var json = getSiteInfo();
    $("div.mainContent fieldset:nth-child(1) p").remove();
    $("div.mainContent fieldset:eq(0)")
        .append( proto_html['poc_edit'] );
    $("div.mainContent :input[name=ocie_poc_name]")
        .val(json.ocie_poc_name);
    $("div.mainContent :input[name=ocie_poc_email]")
        .val(json.ocie_poc_email);
    $("div.mainContent :input[name=ocie_poc_phone_area]")
        .val(json.ocie_poc_phone.substr(0,3));
    $("div.mainContent :input[name=ocie_poc_phone_prefix]")
        .val(json.ocie_poc_phone.substr(3,3));
    $("div.mainContent :input[name=ocie_poc_phone_suffix]")
        .val(json.ocie_poc_phone.substr(6,4));
    bindButtons();
}


function editPR() {
    var json = getSiteInfo();
    $("div.mainContent fieldset:nth-child(2) p").remove();
    $("div.mainContent fieldset:eq(1)")
        .append( proto_html['pr_edit'] );
    $("div.mainContent :input[name=ocie_pr_office_name]")
        .val(json.ocie_pr_office_name);
    $("div.mainContent :input[name=ocie_pr_email]")
        .val(json.ocie_pr_email);
    $("div.mainContent :input[name=ocie_pr_phone_area]")
        .val(json.ocie_pr_phone.substr(0,3));
    $("div.mainContent :input[name=ocie_pr_phone_prefix]")
        .val(json.ocie_pr_phone.substr(3,3));
    $("div.mainContent :input[name=ocie_pr_phone_suffix]")
        .val(json.ocie_pr_phone.substr(6,4));
    bindButtons();
}


function toggleSection(a) {
    var test =
        $(a).children("img:first[src$='collapse.gif']").length;
    var src = $(a).children("img:first").attr("src");
    src = ( test ) 
        ? src.replace(/collapse.gif/i,"expand.gif")
	: src.replace(/expand.gif/i,"collapse.gif");
    $(a).children("img:first").attr("src", src);
    if ( test ){
        $(a).parents("tr").next().hide();
        $(a).parents("td").removeClass('tableActiveColor');
    }else{
        $(a).parents("tr").next().show();
        $(a).parents("td").addClass('tableActiveColor');
    }
}


function bindButtons() {
    $("div.mainContent a.button").unbind();
    $("#button_edit_poc:not(.buttonInactive)").click( function(){
        $(this).addClass('buttonInactive');
        editPOC();
        return false;
    });
    $("#button_edit_pr:not(.buttonInactive)").click( function(){
        $(this).addClass('buttonInactive');
        editPR();
        return false;
    });
    $("#button_save_poc:not(.buttonInactive)").click( function(){
        $(this).unbind();
        $(this).siblings().unbind();
        $(this).parents("p").next()
            .children("*.waitMessage, *.generalErrorMessage").hide();
        postPOC();
        return false;
    });
    $("#button_save_pr:not(.buttonInactive)").click( function(){
        $(this).unbind();
        $(this).siblings().unbind();
        $(this).parents("p").next()
            .children("*.waitMessage, *.generalErrorMessage").hide();
        postPR();
        return false;
    });
    $("#button_cancel_poc:not(.buttonInactive)").click( function(){
        $(this).unbind();
        showPOC();
        return false;
    });
    $("#button_cancel_pr:not(.buttonInactive)").click( function(){
        $(this).unbind();
        showPR();
        return false;
    });
    $("a.buttonInactive").click( function(){
        return false;
    });
}


function setProtoHTML() {
    var proto_pre = {
        'poc':'protoPOCHTML',
        'poc_show':'protoShowPOCHTML',
        'poc_edit':'protoEditPOCHTML',
        'pr':'protoPRHTML',
	'pr_show':'protoShowPRHTML',
        'pr_edit':'protoEditPRHTML'
    };
    proto_html = {};
    jQuery.each(proto_pre, function(i, val) {
        proto_html[i] = $("#" + val).html();
        $("#" + val).remove();
    });
}


jQuery(function($) {
    getSiteCfg();
    setProtoHTML();
    buildContainers();
});